package edu.zueb.sport.enums;

import java.util.Arrays;
import lombok.Getter;

/**
 * 表示用户类型的枚举。
 */
@Getter
public enum UserTypeEnum {

    /**
     * 教师用户类型。
     */
    TEACHER(0, "教师"),

    /**
     * 学生用户类型。
     */
    STUDENT(1, "学生"),
    ;

    /**
     * -- GETTER --
     * 获取用户类型的值。
     *
     * @return 用户类型的值
     */
    private final Integer value;
    /**
     * -- GETTER --
     * 获取用户类型的标签。
     *
     * @return 用户类型的标签
     */
    private final String label;

    /**
     * 构造函数，用于初始化用户类型的值和标签。
     *
     * @param value 用户类型的值
     * @param label 用户类型的标签
     */
    UserTypeEnum(Integer value, String label) {
        this.value = value;
        this.label = label;
    }

    public static UserTypeEnum toUserTypeEnum(Integer userType) {
        return Arrays.stream(UserTypeEnum.values())
                .filter(userTypeEnum -> userTypeEnum.match(userType))
                .findFirst()
                .orElse(null);
    }

    /**
     * 检查给定的值是否匹配当前枚举项的值。
     *
     * @param value 要检查的值
     * @return 如果匹配则返回 true，否则返回 false
     */
    public boolean match(Integer value) {
        return this.value.equals(value);
    }
}
